package com.ITArmy.util;

import com.ITArmy.beans.User;
import com.ITArmy.common.ServerResponse;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Region;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import org.springframework.web.context.support.ServletContextResourceLoader;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

//上传图片的工具类
public class UploadPicture {
    public ServerResponse upload(MultipartFile picture, HttpServletRequest request, String picturePath) {
        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.region0());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证，然后准备上传
        String accessKey = "nuhgqcLNFz5MgHnT45MZBiiLdhtQsTL2xodwkCbE";
        String secretKey = "nqRXdraD468LQLkHCWspjgZYSsC7dVNo-H6fQRyL";
        String bucket = "itarmy";
        //如果是Windows情况下，格式是 D:\\qiniu\\test.png
        String localFilePath = "/home/qiniu/test.png";
        //默认不指定key的情况下，以文件内容的hash值作为文件名
        String key = null;
        try {
            byte[] uploadBytes = picture.getBytes();
            ByteArrayInputStream byteInputStream = new ByteArrayInputStream(uploadBytes);
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);
            try {
                Response response = uploadManager.put(byteInputStream, key, upToken, null, null);
                //解析上传成功的结果
                DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
                String finalUrl = "http://pz7sjost8.bkt.clouddn.com/" + putRet.hash;
                return ServerResponse.createBySuccess("上传成功", finalUrl);
            } catch (QiniuException ex) {
                ex.printStackTrace();
                Response r = ex.response;

                try {
                    System.err.println(r.bodyString());
                } catch (QiniuException ex2) {
                    ex2.printStackTrace();
                    //ignore
                    return ServerResponse.createByErrorMesage("上传失败...");
                }
                return ServerResponse.createByErrorMesage("上传失败...");
            }
        } catch (Exception ex) {
            //ignore
            return ServerResponse.createByErrorMesage("上传失败...");
        }
    }
}
